import axios from 'axios'
import { showLoading, hideLoading } from '../utils/loading'
import { Message } from 'element-ui'
import router from '@/router'

const service = axios.create({
    // baseURL: "http://116.205.164.251:8888",
    timeout: 20000, // 请求超时时间
    headers: {
        // Authorization: 'Bearer ' + window.sessionStorage.getItem('access_token'),
        'Content-Type': 'application/json;charset=UTF-8'
    }
})

// request拦截器
service.interceptors.request.use(
    (config) => {
        // Loading
        showLoading()

        // let access_token = window.sessionStorage.getItem("access_token");
        // if (access_token) {
        //   // 判断是否存在token，如果存在的话，则每个http header都加上token
        //   config.headers.Authorization = `Bearer ${access_token}`; // 根据实际情况自行修改
        // }
        return config
    },
    (error) => {
        // 关闭Loading
        hideLoading()
        Promise.reject(error)
    }
)

// response拦截器
service.interceptors.response.use(
    (response) => {
        // 关闭Loading
        hideLoading()
        if (response.data.code === 200) {
            return response.data
        } else if (response.data.code === 10018) {
            router.push('/forbidden')
            return response.data
        }
    },
    (error) => {
        hideLoading()
        if (window.$count === 0) {
            if (error.response.status === 401) {
                // token失效 ,重新获取token
                // tip信息提示
                Message.error({
                    message: '不允许访问,请联系网站'
                })
            } else if (error.response.status === 500) {
                // 服务器断开
                // tip信息提示
                Message.error({
                    message: '服务器断开，请稍后重试'
                })
            } else if (error.response.status === 403) {
                // 无auth授权，后台不允许访问
                // tip信息提示
                Message.error({
                    message: '不允许访问,请联系网站'
                })
            }
            window.$count++
        }
        return Promise.reject(error)
    }
)

export default service
